Demapper for a multiple-input, multiple-output symbol receiver

ABSTRACT

A method, implementable on a multiple-input, multiple-output symbol receiver, includes selecting a hypothesis for a second symbol value U 2  from among the set of fixed constellation points, calculating a hypothesis for a first symbol value U 1  from the resultant selected U 2  value, and generating a first half of counter-hypotheses from interim results of calculating the hypotheses values.

FIELD OF THE INVENTION

The present invention relates to communication systems generally and to multiple-input, multiple-output communication systems in particular.

BACKGROUND OF THE INVENTION

In most transmission systems, in order to transmit at a high bit rate, symbols representing multiple bits are transmitted. The symbols are defined in the complex plane and are defined by a given constellation. The more bits that each symbol represents, the more points in the constellation. The complex symbols are transmitted with two frequency-domain signals, one representing the Real part and one representing the Imaginary part, known as the “in-phase” and “quadrature” signals.

FIG. 1, to which reference is now made, shows an exemplary 64-point constellation, for the QAM (quadrature amplitude modulation) method. Each point, which represents a symbol value, is a complex number having a Real and Imaginary parts. Thus, the point labeled 40 has a complex value of (5,3). It also has a complex bit pattern associated therewith, of 101 111, where 101 is the bit pattern associated with the Real part and 111 is the bit pattern associated with the Imaginary part of the symbol. Thus, there are 6 bits associated with each symbol.

FIG. 2, to which reference is now made, illustrates the transmission from one transmitting antenna, labeled 10, to another, receiving, antenna, labeled 12. Between the two there is a “channel” H, which is the path in the air between transmitting antenna 10 and receiving antenna 12, which may be obstructed, such as by trees, hills, buildings, etc. Transmitting antenna 10 transmits a symbol, here labeled u, and receiving antenna 12 receives a signal, here labeled y, which is a corrupted version of symbol u, by the channel H and by noise n, as follows:

Y=hu+n  Equation 1

where the h defines how the channel affects transmission and n is random noise.

Equation 1 defines how the channel affects the transmission of a symbol. Point 5 in FIG. 1 shows a received symbol y. Note that point 5, while close to two points 7 and 9 of the constellation, doesn't sit on either of them. Thus, it is the job of the receiver to determine which symbol point 7 or 9 (or any other symbol) was originally transmitted.

A system where transmission of two or more symbols at the same time from two or more transmitter antennas to two or more receiver antennas takes place is known as a MIMO (multiple-input, multiple-output) communication system. The transmitted symbols are not related to each other and the paths, though similar, are not exactly the same. This is shown in FIG. 3, to which reference is now made, for the case of two transmitter antennas and two receiver antennas. Symbols u₁ and u₂ are transmitted from transmitting antennas 10 a and 10 b, respectively, and signals y₁ and y₂ are received at receiving antennas 12 a and 12 b, respectively. Both receiving antennas 12 a and 12 b receive versions of the transmitted symbols u₁ and u₂, which are transformed by the channel, where the channel for the MIMO case is a matrix H. and are affected by noise n₁ and n₂, respectively.

FIG. 4, to which reference is now made, shows exemplary received signals y₁ and y₂ in their constellations. Signal y₁ is in the lower right quadrant while signal y₂ is in the upper right quadrant. The goal is to decode signals y₁ and y₂ in order to determine transmitted symbols u₁ and u₂, which normally represent a coded version of original data bits including redundancy. The decoding process can be divided in two steps where, initially, the received signals y1 and y2 are converted to “soft” bit information such as Log Likelihood Ratios for each coded bit. Afterwards, the data bits are extracted from the soft bit information by a Maximum Likelihood Sequence Estimator, such as a soft-input Viterbi Decoder.

SUMMARY OF THE PRESENT INVENTION

There is provided, in accordance with a preferred embodiment of the present invention, a demapper for a multiple-input, multiple-output symbol receiver. The demapper includes a hypothesis determiner and a first half counter-hypothesis determiner. The hypothesis determiner determines hypotheses values for each of a multiplicity of received symbols. The first half counter-hypotheses determiner reuses interim results of the hypothesis determiner to generate a first half of the counter-hypotheses.

Further, in accordance with a preferred embodiment of the present invention, the demapper includes a the second half counter-hypotheses determiner which receives a portion of the interim results and provides them to a table lookup to generate a second half of the set of the counter-hypotheses.

Moreover, in accordance with a preferred embodiment of the present invention, the hypothesis determiner includes a QR decomposer, a normalizer, a candidate hypothesis generator, a normalized error calculator and a hypothesis generator. The QR decomposer generates at least an R matrix from an input channel estimate matrix H. The normalizer normalizes input signals and elements of the R matrix. The candidate hypothesis generator operates on the output of the normalizer to generate a plurality of constrained candidate hypothesis values for one of the received symbols and resultant unconstrained hypothesis values for a second one of the received symbols. The normalized error calculator operates with minimal multiplications and generates an error magnitude for each of the plurality of constrained candidate hypotheses and their resultant unconstrained hypothesis values. The hypothesis generator reviews the error magnitudes and selects the constrained hypothesis and resultant unconstrained hypothesis corresponding to the smallest error magnitude.

Further, in accordance with a preferred embodiment of the present invention, the first half counter-hypotheses determiner includes a multiplicity of counter-hypothesis generators, one per bit of the selected hypothesis, each to review a set of the error magnitude associated with candidate counter-hypotheses and to select the counter-hypothesis corresponding to the smallest error magnitude in the set of error magnitudes.

Still further, in accordance with a preferred embodiment of the present invention, the normalized error calculator includes a d₂ error magnitude calculator, a d₁ error magnitude calculator and a total error magnitude calculator. The d₂ error magnitude calculator evaluates the error Ē₂ ^((k))= X ₂− r ₂U₂ ^((k)) and its corresponding L₁ norm. The d₁ error magnitude calculator evaluates Ũ₁ ^((k))= X ₁− R ₁₂U₂ ^((k)), to find the closest constellation point U₁ ^((k)) to an unconstrained solution Ũ₁ ^((k)) and determines the error Ē₁ ^((k)) therebetween and its corresponding L₁ norm. The total error magnitude calculator determines the total error magnitude from the output of d₂ error magnitude calculator and d₁ error magnitude calculator.

Additionally, in accordance with a preferred embodiment of the present invention, the d₁ error magnitude calculator and the d₂ error magnitude calculator include L₁ norm calculators.

Furthermore, in accordance with a preferred embodiment of the present invention, the demapper has a fixed throughput defined by a fixed number of cycles to generate the output.

Moreover, in accordance with a preferred embodiment of the present invention, the normalized error calculator includes a multiplicity of processing branches, wherein the number of processing branches scales with a complexity of the constellation type related to the symbols.

Still further, in accordance with a preferred embodiment of the present invention, the demapper provides the hypotheses and counter-hypotheses values to an LLR determiner. The LLR determiner utilizes the interim results of the hypothesis and first half counter-hypotheses determiner and interim results of the second half counter-hypothesis determiner to generate a log-likelihood ratio L_(b).

There is also provided, in accordance with a preferred embodiment of the present invention, a method, implementable on a multiple-input, multiple-output symbol receiver. The method includes selecting a hypothesis for a second symbol value U₂ from among the set of fixed constellation points, calculating a hypothesis for a first symbol value U₁ from the resultant selected U₂ value and generating a first half of counter-hypotheses from interim results of calculating the hypotheses values.

Further, in accordance with a preferred embodiment of the present invention, the method includes providing a portion of the interim results to a table lookup to generate a second half of the set of the counter-hypotheses.

Moreover, in accordance with a preferred embodiment of the present invention, the method also includes, prior to the calculating, normalizing the following equations by r₁ thereby to enable the remaining operations to operate with minimal multiplications:

E ₂ =X ₂ −r ₂ U ₂

E ₁ =X ₁ −r ₁ U ₁ −R ₁₂ U ₂

where the R elements are from a right triangular matrix R generated by QR decomposition from an input channel estimate matrix H, U₁ and U₂ are the transmitted symbols to be demapped and X₁ and X₂ are the received signals.

Further, in accordance with a preferred embodiment of the present invention, the calculating includes calculating errors and determining the size of the errors is performed with an L₁ norm without significantly affecting the quality of the demapping.

Additionally, in accordance with a preferred embodiment of the present invention, the method also includes determining a log-likelihood ratio L_(b) from the interim results of calculating the hypotheses values and from interim results of the table lookup operation.

BRIEF DESCRIPTION OF THE DRAWINGS AND APPENDICES

The subject matter regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, however, both as to organization and method of operation, together with objects, features, and advantages thereof, may best be understood by reference to the following detailed description when read with the accompanying drawings in which:

FIG. 1 is a schematic illustration of an exemplary 64-point constellation, for the QAM (quadrature amplitude modulation) method;

FIG. 2 is a schematic illustration of the transmission from one transmitting antenna to a receiving antenna;

FIG. 3 is a schematic illustration of the transmission from two transmitting antennas to two receiving antennas;

FIG. 4 is a schematic illustration of a constellation with two received symbols;

FIG. 5 is a block diagram illustration of a MIMO (multiple-input, multiple-output) system, constructed and operative in accordance with a preferred embodiment of the present invention;

FIG. 6 is a block diagram illustration of the elements of the MIMO processor of FIG. 5, constructed and operative in accordance with a preferred embodiment of the present invention;

FIGS. 7 and 8 are illustrations of the calculations performed by a demapper of FIG. 6;

FIGS. 9 and 10 are block diagram illustrations of an exemplary hardware implementation of the demapper of FIG. 6; and

Appendix A provides tables useful for a table lookup element of FIG. 10 for multiple types of constellations.

It will be appreciated that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity. Further, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements.

DETAILED DESCRIPTION OF THE PRESENT INVENTION

In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, and components have not been described in detail so as not to obscure the present invention.

Applicant has realized that the processing for a MIMO (multiple-input, multiple-output) demapper may be significantly reduced.

Reference is now made to FIG. 5, which illustrates the main elements of a MIMO system. On the transmission side, an access point (AP) may provide its data to be transmitted through multiple transmitting antennas 10, where FIG. 5 shows 2 antennas 10. These are received by N receiving antennas 12, where, in FIG. 5, three receiving antennas 12 are shown. The output of receiving antennas 12 may be processed, such as by a radio frequency (RF) unit 20 to receive the transmission and to convert it from an analog to a digital signal (ADC), a time domain (TD) processor 22 to process the digital, time domain signal and a fast Fourier transform (FFT) unit 24 to convert the time domain signal to a frequency based signal, which is the incoming signal y. Units 20 24 may be standard units. The incoming y signal may be a vector of length N, where N is the number of receiving antennas 12.

The incoming signal y may be provided to a MIMO processor which, in accordance with a preferred embodiment of the present invention, may be a list based, MIMO processor 30, and to a channel estimator 32. Channel estimator 32 may be a standard channel estimator which may provide the matrix H for the current channel, where H is of size N×M, where M is the number of transmission antennas 10.

The output of MIMO processor 30 may be provided to a deinterleaver 34 which provides its output to a Viterbi decoder 36 for a final determination of the transmitted data bits.

The output of MIMO processor 30 may be a vector Lb which may provide “soft” information corresponding to the values of the symbols u represented by the incoming signal y. Like y, Lb may be a vector, but Lb may be a vector of length M*J, where J is the number of bits in a symbol. In other words, u represents the M transmitted symbols, each of which has J bits.

In accordance with a preferred embodiment of the present invention, MIMO processor 30 may provide “soft decisions” for each bit, thus providing unit 34 and Viterbi decoder 36 with some indication of the quality of the demapping.

MIMO processor 30 may calculate a log-likelihood ratio L_(b) for each bit position b in symbol vector u. Using a “Log Max approximation”, a standard approximation, the ratio L_(b) may be defined as:

$\begin{matrix} {L_{b} = {\frac{1}{\sigma^{2}}\left( {{2{\hat{u}}^{\lbrack b\rbrack}} - 1} \right)\left( {{{y - {H{\hat{c}}_{b}}}}^{2} - {{y - {H\hat{u}}}}^{2}} \right)}} & {{Equation}\mspace{14mu} 2} \end{matrix}$

where σ may be the standard deviation of the noise, û may be a hypothesis for the values of u, ĉ_(b) may be a corresponding counter hypothesis for the bit position b, defined in more detail herein below and, û^([b]) may be the bit value {0 or 1} at bit position b of the bit pattern associated with û.

Equation 2 may be further simplified by performing a standard decomposition, defined by:

H=QR  Equation 3

Where Q is the unitary matrix, which, when multiplied by its conjugate-transpose Q* creates the identity matrix I (mathematically: Q×Q*=I), and R is an upper-triangular matrix.

The resultant simplified version of equation 2 is:

$\begin{matrix} {L_{b} = {\frac{1}{\sigma^{2}}\left( {{2{\hat{u}}^{\lbrack b\rbrack}} - 1} \right)\left( {{{x - {R{\hat{c}}_{b}}}}^{2} - {{x - {R\hat{u}}}}^{2}} \right)}} & {{Equation}\mspace{14mu} 4} \end{matrix}$

where x is a form of y defined by Q*×y.

It will be appreciated that equation 4 is simpler than equation 2 because H is a complex matrix generally having no zero elements whereas R is an upper triangular matrix of complex elements.

Hypothesis û may be defined by:

û=arg

∥x−Ru∥ ²  Equation 5

where argmin is the argument which minimizes the “L₂ norm”, a standard norm defined by the double lines, and

is the space of the constellation (i.e. it covers all possible symbol values within the constellation).

The counter hypothesis at bit position b, ĉ_(b), may be defined as:

ĉ _(b)=arg

_([b]) _((û)) ∥x−Rc∥ ²  Equation 6

Where

^([b])(û) is the subset of the constellation space

whose elements have associated bit patterns with a bit value at position b opposite to the corresponding bit value at that bit position associated with the hypothesis û. To determine the log-likelihood ratio L_(b), therefore, one has to evaluate equations 5, 6 and 4, in that order. There are 64 possible symbols in the QAM constellation example and two symbols which have been transmitted. This is a significant number of possibilities! Moreover, each equation requires a significant amount of matrix calculations, which requires a significant amount of multiplications. Thus, this calculation is difficult to perform for the large constellations such as the one used here as an example.

Applicant has invented a relatively efficient way to evaluate equations 6 and 5 in a manner which minimizes the amount of multiplications and other necessary operations. Reference is now made to FIG. 6, which illustrates the elements of MIMO processor 30. Processor 30 may comprise a QR decomposer 42, a normalizer 44, a complex list-based lattice (CLL) demapper 46 and log-likelihood ratio (LLR) determiner 48. Together, the elements solve equations 4, 5 and 6.

Initially, processor 30 may handle the error term:

e=(E ₁ E ₂)^(T) =x−Ru

Since R is an upper triangular matrix, its elements are:

$R = \begin{pmatrix} r_{1} & R_{12} \\ 0 & r_{2} \end{pmatrix}$

where r₁ and r₂ are real variables and R₁₂ is a complex variable. The error term may be rewritten as two error terms, as follows:

E ₂ =X ₂ −r ₂ U ₂  Equation 7

E ₁ =X ₁ −r ₁ U ₁ −R ₁₂ U ₂  Equation 8

Normalizing equations 7 and 8 by r₁ reduces the implementation costs of equation 8, which must be computed many times. Thus, QR decomposer 42 may evaluate equation 3 and may produce matrices Q and R and normalizer 44 may normalize the non-symbol terms of equations 7 and 8, to generate:

Ē ₂ = X ₂ r ₂ U ₂  Equation 7a

Ē ₁ = X ₁ −U ₁ − R ₁₂ U ₂  Equation 8a

Equation 8a may be rewritten as two equations an equation for an unconstrained solution Ũ₁ and an equation for the error in constraining Ũ₁ to a valid constellation point U₁. Thus:

Ũ ₁ ^((k)) = X ₁ − R ₁₂ U ₂ ^((k))  Equation 9

Ē ₁ ^((k)) =Ũ ₁ ^((k)) −U ₁ ^((k))  Equation 10

Equations 7a, 9 and 10 need to be evaluated for all possible combinations of U₁ and U₂. This is normally a difficult operation given that, in a constellation of |

|symbols, there are |

|² combinations of U₁ and U₂.

If you fix the value of U₂ to be one of the values in the constellation, equation 9 will generate an associated unconstrained solution Ũ₁ from which U₁ may be derived as the constellation point nearest to the unconstrained solution Ũ₁.

Reference is now made to FIG. 7, which illustrates this. Column 50 lists the |

| possible constellation points, denoted by k (64 points in the QAM constellation example). Column 52 lists the symbol value of U₂ ^((k)) for each point k. Rather than giving values, the table lists these as (Ri,Ii). These are the possible values of U₂. Using equation 9, column 54 lists the resultant values of Ũ₁ ^((k)) for each value of U₂ ^((k)). For clarity, the table lists only three resultant values, for k=1, 37 and 64.

It will be appreciated that U₁ ^((k)) may be set to the symbol value closest to the generated value of approximation Ũ₁ ^((k)).

Equation 10 provides the error term for each of the 64 values of U₁ ^((k)) and equation 7a provides the error term for E₂, for each of the 64 values of U₂ ^((k)).

A error magnitude d^((k)) may be generated for each value of k from equations 10 and 8a, as follows:

d ₂ ^((k))=|Re(Ē ₂ ^((k)))|+|Im(Ē ₂ ^((k)))|  Equation 11a

d ₁ ^((k))=|Re(Ē ₁ ^((k)))|+|Im(Ē ₁ ^((k)))|  Equation 11b

d ^((k)) =d ₂ ^((k)) +d ₁ ^((k))  Equation 11c

Where Re( ) takes the real part and Im( ) takes the imaginary part of a complex number. It will be appreciated that equations 11a and 11b determine the error magnitude using an L₁ norm, which is a simpler calculation as it uses only standard absolute values and does not have any multiplication in it.

The table of FIG. 7 lists d^((k)), in column 56, for each of the 64 values of the table. In accordance with a preferred embodiment of the present invention, demapper 46 may search column 56 to find the row with the smallest error magnitude d. For example, in FIG. 7, row 37 is circled to indicate that d⁽³⁷⁾ has the smallest value. Thus, in this example, the 37^(th) constellation pair (U₁ ⁽³⁷⁾,U₂ ⁽³⁷⁾) provides us with the hypothesis, i.e. û. Mathematically, the search in column 56 may be written as:

k _(ML)=arg min_(k) {d ^((k))}  Equation 12

i.e. the constellation point of the solution is the one which has the smallest error magnitude d. It should be noted that, aside from the use of the L₁ norm instead of the L₂ norm, equation 12 leads to estimates which are essentially ML (maximum likelihood) estimates for the transmitted symbols u because of the log-max approximation in equation 2. It will be appreciated that the estimates of equation 12 are only negligibly different from the true ML estimates. The resultant hypothesis is written mathematically as:

û=(Û ₁ ,Û ₂)^(T)=(U ₁ ^((k) ^(ML) ⁾ ,U ₂ ^((k) ^(ML) ⁾)^(T)  Equation 13

It will be appreciated that, with a minimal amount of multiplications and only 64 combinations, demapper 46 may produce the hypothesis û (i.e. Equation 5). What remains is to determine the counter-hypotheses ĉ_(b).

Applicant has realized that, since the U₂ value was selected from among the possible values of the constellation, the U₂ value is a “constrained” solution, constrained to be a proper constellation point. Thus, its counter-hypotheses ĉ_(b) may be directly determined from the error magnitude calculations of equation 11c. This is not true for the U₁ values, which are calculated from the U₂ constellation points and do not, in general, cover all the constellation points.

It will be appreciated that, since the U₂ value is a proper constellation point, accordingly, half of the counter-hypothesis determinations (i.e. those related to U₂) do not require additional calculations and they are thus determined nearly for ‘free’, as follows:

For each bit b in the selected Û₂ (for example, there are 6 bits in a 64 QAM constellation point), demapper 46 may determine which of the constellation points have the opposite value (i.e. they have a 1 value where the bit in Û₂ has a 0 value or a 0 value where the bit in Û₂ has a 1 value). Thus, if U₂ ⁽³⁷⁾ (k_(ML)=37) is (101,000), then, for bit 1, demapper 46 may search for all constellation points whose first bit has a value of 0. There are 32 of these points. FIG. 8 denotes those constellation points with the desired counter-hypothesis bit value with a check and those with the undesired bit value with a dash.

In effect, demapper 46 may mask the constellation points that have the undesired bit value and then may search through the remaining unmasked error magnitude d^((k)) values in column 56 for the constellation point with the smallest error magnitude. This may produce counter-hypothesis ĉ_(b) for bit b. In FIG. 7, d⁽²⁴⁾ is shown to have the smallest error magnitude and thus, constellation pair 24, U₂ ⁽²⁴⁾ and the corresponding U₁ ⁽²⁴⁾, is the counter-hypothesis for bit 1 of hypothesis U₂ ⁽³⁷⁾, where bit 1 of hypothesis U₂ ⁽³⁷⁾ is bit 7 of the overall hypothesis vector. Note that, in the example of FIG. 7, d⁽¹⁾ is listed as the smallest error magnitude for bit 8, and d⁽⁶⁴⁾ is listed as the smallest error magnitude for bit 12.

Mathematically, the process described hereinabove is defined as:

l _(ML) ^((β))=arg min_(lεδ) _(β) {d ^((l))}

δ_(β) ={l:U ₂ ^((l)[β]) ≠Û ₂ ^([β])}, β=1, . . . ,6

ĉ _(β+6)=(U ₁ ^((l) ^(ML) ^((β)) ⁾ ,U ₂ ^((l) ^(ML) ^((β)) ⁾)^(T)  Equation 14

where l is one constellation point, l_(ML) ^((β)) is the selected constellation point (i.e. the point with the smallest error magnitude) and δ_(β) is the mask.

What remains is to determine the counter-hypotheses ĉ_(b) for bits associated with hypothesis Û₁. Recall that Ũ₁ is an unconstrained solution (i.e it is a calculated value rather than a fixed, integer constellation value). Thus, it isn't clear what the counter-hypothesis is, as the values of the bits are not exactly 0 or 1. Thus, a search must be made for the counter-hypothesis for each bit.

Applicant has realized that, for the 64 point QAM constellation, there are only four possibilities for each counter-hypothesis for U₁. This is because U₁ has six bits, only one of which must be changed for the counter-hypothesis. If the changed bit corresponds to the real part of the symbol, the imaginary part is kept unchanged. Likewise, if the changed bit corresponds to the imaginary part of the symbol, the real part is kept unchanged. This leaves two bits, both from either the real part or the imaginary part that can be varied. Consequently, there are only four candidate constellation points. Thus, as shown in FIG. 8 to which reference is now briefly made, if Û₁ is (010,101), if the bit of interest is bit 3, which has a 0 value, only the constellation points (001,101), (011,101), (111,101) and (101,101) have bit 3 with a 1 value, while keeping bits 4, 5 and 6 unchanged. If the bit of interest is bit 2, then the constellation points of interest are (000,101), (001,101), (101,101) and (100,101).

Note that in the example of FIG. 8, the four constellation points are all in the same row. That is because bits 1-3 are associated with the Real axis. The points would be in the same column if the bits of interest were associated with the Imaginary axis. In accordance with the present invention, constellation points are searched along one axis; otherwise, the total error magnitude would necessarily increase and not reach a global minimum.

Thus, for each of the four possible counter-hypothesis constellation points, the error magnitude may be determined and the smallest value selected. This process is repeated for each of 64 unconstrained solutions Ũ₁ ^((m)). Each corresponding constrained value U₁ ^((m)) is converted to a candidate value U₁ ^((m,β)), where the latter is a proper counter-hypothesis candidate as described above, for each bit position β in Û₁. For each candidate value U₁ ^((m,β)), a corresponding partial error magnitude d₁ ^((m,β)) is computed according to equations 10 and 11b. This partial error magnitude is used to compute the total error magnitude d^((m,β))=d₂+d₁ ^((m,β)). The resulting set d^((m,β)) of 64 error magnitudes may be searched to determine the smallest value. The pair {U₂ ^((m)),U₁ ^((m,β))} corresponding to the smallest d^((m,β)) is selected as the essentially ML estimate of c_(β) for bit β.

Note that this process is repeated for each bit position β in Û₁. The arithmetic cost of each operation is essentially a small number of additions (no multiplications are involved due to the pre-normalization in equation 8a) per constellation point (64 possibilities) and per bit position (6 possibilities).

Applicant has realized that the determination of U₁ ^((m,β)) per constellation point m and per bit position β is a function of the value of Û₁ and the position of the hypothesis candidate U₁ ^((m)) relative to the corresponding unconstrained solution Ũ₁ ^((m)) (i.e. is the real/imaginary part of Ũ₁ ^((m)) to the left/below or right/above of the closest constellation point U₁ ^((m))?) and may be implemented as a table lookup (TLU) function. For 64 point QAM, the lookup table has 2×8×2×3=96 entries. Appendix A provides exemplary lookup tables for various QAM constellations. The table lists the bit position β, the value of hypothesis bit β (Û₁ ^([β])), the sign of the error term Ē₁ ^((m)), the hypothesis candidate U₁ ^((m)), and the resultant counter hypothesis candidate U₁ ^((m,β)).

Given the output of the table lookup function, the counter-hypothesis may be calculated, as follows:

Re(U ₁ ^((m,β)))=TLU(Û ₁ ^([β]),Re(U ₁ ^((m))),sign(Re(Ē ₁ ^((m)))),β)  Equation 15A

Im(U ₁ ^((m,β)))=TLU(Û ₁ ^([β]),Im(U ₁ ^((m))),sign(Im(Ē ₁ ^((m)))),β)  Equation 15B

Ē ₁ ^((m,β)) =Ũ ₁ ^((m)) −U ₁ ^((m,β))  Equation 16

d ₁ ^((m,β))=|Re({tilde over (E)} ₁ ^((m,β)))|+|Im({tilde over (E)} ₁ ^((m,β)))|  Equation 17

d ^((m,β)) =d ₂ ^((m)) +d ₁ ^((m,β))  Equation 18

m _(ML) ^((β))=arg min_(m) {d ^((m,β))}  Equation 19

ĉ _(β)=(U ₁ ^((m) ^(ML) ^((β)) ^(,β)) ,U ₂ ^((m) ^(ML) ^((β)) ⁾)^(T)  Equation 20

where, β is the bit number of interest (i.e. 1-6), and m is the constellation point index of interest. Note that the values of Û₁, U₁ ^((m)), Ē₁ ^((m)) and d₂ ^((m)) known from the previous calculations.

Reference is now made to FIGS. 9 and 10, which illustrate an exemplary hardware implementation for demapper 46. Demapper 46 may comprise a hypothesis and top-half counter-hypothesis determiner (HCHD) 60 and a bottom-half counter-hypothesis determiner (BCHD) 62.

HCHD 60 may comprise a d₂ error magnitude calculator 64 and a d₁ error magnitude calculator 66. D₂ error magnitude calculator 64 may comprise a multiplicity of elements 68 which may receive the normalized values of r₂ and of received symbol X₂ and may evaluate equation 7a (Ē₂= X ₂− r ₂U₂) for each constellation point U₂. Equation 7a is a complex equation but may be evaluated as two real equations as follows:

ReĒ ₂=Re X ₂ − r ₂ReU ₂  Equation 7a(1)

ImĒ ₂=Im X ₂ − r ₂ImU ₂  Equation 7a(2)

Thus, elements 68 may separately evaluate equations 7a(1) and 7a(2).

Moreover, since quantities Re U₂ and Im U₂ are essentially 3-bit operands (i.e. 3 bit values), elements 68 may be efficiently implemented with a few adders rather than as multipliers. Calculator 64 may also comprise a multiplicity of simple absolute value adders 70 which may determine the error magnitude d₂ (from equation 11a) for each constellation point U₂.

D₁ calculator 66 may determine the error magnitude d₁ and may comprise complex multipliers 72 to evaluate equation 9 (Ũ₁ ^((k))= X ₁− R ₁₂U₂ ^((k))) and to thus determine the unconstrained solution Ũ₁ ^((k)). d₁ calculator 66 may also comprise a multiplicity of nearest constellation point determiners 74 which may find the closest constellation point to each unconstrained solution Ũ₁ ^((k)), thereby to determine the U₁ hypothesis. d₁ calculator 66 may comprise a multiplicity of subtractors 76 to subtract the U₁ values from the unconstrained solution Ũ₁ ^((k)), thereby evaluating equation 10. Their output may be provided to a multiplicity of simple absolute value adders 78 to determine the partial error magnitude d₁ for each constellation point k, thereby evaluating equation 11b.

The output of both calculators 64 and 66 may be provided to simple real adders 80 to determine the total error magnitude d^((k)) for each constellation point (i.e. evaluating equation 11c).

HCHD 60 may additionally comprise a hypothesis generator 67, comprising a minimum evaluator 90 to determine, from error magnitudes d^((k)), a hypothesis candidate {U₂ ^((k)),U₁ ^((k))}, an associated selector 91, and a set of minimum evaluators 92 for the top counter hypotheses, each of which reviews a different subset of the error magnitudes d^((k)), each with their associated selector 93. Hypothesis minimum evaluator 90 may evaluate equation 12, over the entire set of error magnitudes, thereby to generate the hypothesis value of U₁ for its corresponding U₂.

The selected hypothesis values have associated bit patterns, and each counter hypothesis minimum evaluator 92 may be associated with a particular bit b. Each evaluator 92 may select the error magnitude d^((l)) with the minimum value having the required counter hypothesis value for its associated bit b. This is used to select the counter-hypothesis values for U₂—an evaluation of equation 14. Applicant has realized that by working with error magnitude subsets, no further operations are required to compute the counter-hypotheses for U₂, besides finding the minimum among error magnitudes in each subset.

It will be appreciated that, except for the multipliers 68 and 72, the remaining elements of HCHD 60 are simple elements.

BCHD 62 may comprise table lookup elements 100, one per bit of the counter-hypothesis, a few simple subtractors 104 and a multiplicity of absolute value adders 106. Each table lookup element 100 may take its hypothesis values for U₁ and difference values E₁ from HCHD 60 and may generate the value for U₁ ^((m,β)) and the selected constellation point m, according to equation 15. Each subtractor 104 may evaluate equation 16, subtracting the selected constellation point U₁ ^((m,β)) value from the previously determined unconstrained solution Ũ₁ ^((m)) value.

Each absolute value adder 106 may evaluate equation 17 by determining the error magnitude d₁ ^((m,β)) for the selected constellation point m and bit position β of U₁, where the error magnitude is calculated using absolute values (i.e. the L₁ norm). Each adder 108 may determine the full error magnitude, adding the error magnitude d₁ from its adder 106 to the d₂ error magnitude for the corresponding U₂ previously determined by HCHD 60 (i.e. may evaluate equation 18).

BCHD 62 may additionally comprise a counter-hypothesis generator 110 comprising, for each bit, a minimum evaluator 112 with an associated selector 114. Each minimum evaluator 112 may evaluate equation 19 by reviewing the error magnitudes d generated by adders 108 and by selecting the smallest error magnitude d. Each minimum evaluator 112 may then indicate to its selector 114 which counter-hypothesis to select.

It will be appreciated that the elements utilized by BCHD 62, like those of HCHD 60, are relatively simple elements. Each operation may be performed within one cycle of relatively short duration due to the simplicity of operations, and thus, the operations of HCHD 60 and BCHD 62 may be implemented in a pipelined manner. Because of this, and of the simple operations, very high throughput may be possible. Moreover, it will be appreciated that the throughput is fixed; no steps require determining if the calculation is finished. As a result, data may move through demapper 46 very smoothly, which may simplify the design of the controller needed to operate demapper 46.

Furthermore, it will be appreciated that the present invention is relatively insensitive to the errors often caused by using the L₁ norm rather than the L₂ norm, and as a result, benefits from substantial savings in implementation costs.

It will be appreciated that the 64-point QAM constellation used as example does not limit the applicability of the methods of the present invention to other constellations. Moreover, the present invention does not require 64 parallel computation paths. It is possible to implement 8, 4 and 2 computation paths for 64, 16 and 4 QAM constellations, respectively, and to reuse those paths 8, 4, and 2 times for each complete demapping operation. This way, the amount of operating logic and its operating frequency scales according to the constellation, which helps save battery power consumption.

Moreover, it will be appreciated that the number of processing branches scales with the constellation complexity. In FIGS. 9 and 10, there are 64 incoming branches for a 64 QAM constellation. A constellation of a different size will have different number of branches. Furthermore, the power consumption also scales according to constellation complexity which provides a significant efficiency.

Referring back to FIG. 6, demapper 47 may provide its output, the hypotheses and counter-hypotheses, to LLR determiner 48 which may, in turn, determine the log-likelihood ratio L_(b) according to equation 4, repeated hereinbelow.

$\begin{matrix} {L_{b} = {\frac{1}{\sigma^{2}}\left( {{2{\hat{u}}^{\lbrack b\rbrack}} - 1} \right)\left( {{{x - {R{\hat{c}}_{b}}}}^{2} - {{x - {R\hat{u}}}}^{2}} \right)}} & {{Equation}\mspace{14mu} 4} \end{matrix}$

where x is the non-normalized received symbol vector and R is the non-normalized upper triangular matrix.

In accordance with an alternative embodiment of the present invention, the log-likelihood ratio L_(b) may be evaluated more simply, using L₁ norms without significantly affecting performance, as follows:

$\begin{matrix} {L_{b} = {{\frac{r_{1}^{2}}{\sigma^{2}}\left( {{2{\hat{u}}^{\lbrack b\rbrack}} - 1} \right){}\overset{\_}{x}} - {\overset{\_}{R}{\hat{c}}_{b}{^{2} - }\overset{\_}{x}} - {\overset{\_}{R}\hat{u}{^{2}}}}} & {{Equation}\mspace{14mu} 4a} \end{matrix}$

where x is the normalized received symbol vector and R is the normalized upper triangular matrix, normalized by r₁. More importantly, equation 4a may be evaluated using the error magnitudes previously calculated by demapper 46. Specifically (for bits b=β=1 . . . 6),

d ^((m) ^(ML) ^((β)) ^(,β)) =| x− Rĉ _(β)|  Equation 21

d ^((k) ^(ML) ⁾ =| x− Rû|  Equation 22

And equation 4a becomes simplified and is evaluated based on previously computed values. Specifically, for bits b=β=1 . . . 6:

$\begin{matrix} {L_{b} = {\frac{r_{1}^{2}}{\sigma^{2}}\left( {{2{\hat{u}}^{\lbrack b\rbrack}} - 1} \right){{d^{({m_{ML}^{(\beta)},\beta})} - d^{(k_{ML})}}}\left( {d^{({m_{ML}^{(\beta)},\beta})} + d^{(k_{{ML})}}} \right)}} & {{Equation}\mspace{14mu} 4b} \end{matrix}$

And for bits b=β+6=7 . . . 12,

$\begin{matrix} {L_{b} = {\frac{r_{1}^{2}}{\sigma^{2}}\left( {{2{\hat{u}}^{\lbrack b\rbrack}} - 1} \right){{d^{(l_{ML}^{(\beta)})} - d^{(k_{ML})}}}\left( {d^{(l_{ML}^{(\beta)})} + d^{(k_{{ML})}}} \right)}} & {{Equation}\mspace{14mu} 4c} \end{matrix}$

It will be appreciated that LLR determiner 48, like demapper 36, is relatively insensitive to the use of the L₁ norm. This insensitivity reduces the calculations to simple subtractions rather than multiplications which very significantly reduces the complexity of list-based MIMO processor 30.

Unless specifically stated otherwise, as apparent from the preceding discussions, it is appreciated that, throughout the specification, discussions utilizing terms such as “processing,” “computing,” “calculating,” “determining,” or the like, refer to the action and/or processes of a computer, computing system, or similar electronic computing device that manipulates and/or transforms data represented as physical, such as electronic, quantities within the computing system's registers and/or memories into other data similarly represented as physical quantities within the computing system's memories, registers or other such information storage, transmission or display devices.

Embodiments of the present invention may include apparatus for performing the operations herein. This apparatus may be specially constructed for the desired purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk, including floppy disks, optical disks, magnetic-optical disks, read-only memories (ROMs), compact disc read-only memories (CD-ROMs), random access memories (RAMs), electrically programmable read-only memories (EPROMs), electrically erasable and programmable read only memories (EEPROMs), magnetic or optical cards, Flash memory, or any other type of media suitable for storing electronic instructions and capable of being coupled to a computer system bus.

The processes and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the desired method. The desired structure for a variety of these systems will appear from the description below. In addition, embodiments of the present invention are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.

While certain features of the invention have been illustrated and described herein, many modifications, substitutions, changes, and equivalents will now occur to those of ordinary skill in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and changes as fall within the true spirit of the invention.

APPENDIX A Lookup Tables

The table is the same for the real and the imaginary components. The bit position is within the component. bit pos: Zero based bit position within the real or imaginary component; hyp bit: hypothesis bit value at the bit position; error sign: sign of the error Ē₁; c/hyp in: real or imaginary input counter-hypothesis value U₁ ^((m)); and c/hyp out: real or imaginary resultant counter-hypothesis value U₁ ^((m,β))

//==================================================== // Table of Counter-Hypotheses for 16-QAM Constellation. //==================================================== //bit hyp error c/hyp c/hyp //pos bit sign in out // 0 0 −1 −3 −1 // 0 0 −1 −1 −1 // 0 0 −1 +1 +1 // 0 0 −1 +3 +1 // 0 0 +1 −3 −1 // 0 0 +1 −1 −1 // 0 0 +1 +1 +1 // 0 0 +1 +3 +1 // 0 1 −1 −3 −3 // 0 1 −1 −1 −3 // 0 1 −1 +1 +3 // 0 1 −1 +3 +3 // 0 1 +1 −3 −3 // 0 1 +1 −1 −3 // 0 1 +1 +1 +3 // 0 1 +1 +3 +3 // 1 0 −1 −3 +1 // 1 0 −1 −1 +1 // 1 0 −1 +1 +1 // 1 0 −1 +3 +3 // 1 0 +1 −3 +1 // 1 0 +1 −1 +1 // 1 0 +1 +1 +1 // 1 0 +1 +3 +3 // 1 1 −1 −3 −3 // 1 1 −1 −1 −1 // 1 1 −1 +1 −1 // 1 1 −1 +3 −1 // 1 1 +1 −3 −3 // 1 1 +1 −1 −1 // 1 1 +1 +1 −1 // 1 1 +1 +3 −1

//===================================================== // Table of Counter-Hypotheses for BPSK/QPSK Constellation. //===================================================== //bit hyp error c/hyp c/hyp //pos bit sign in out // 0 0 −1 −1 +1 // 0 0 −1 +1 +1 // 0 0 +1 −1 +1 // 0 0 +1 +1 +1 // 0 1 −1 −1 −1 // 0 1 −1 +1 −1 // 0 1 +1 −1 −1 // 0 1 +1 +1 −1

//===================================================== // Table of Counter-Hypotheses for 64-QAM Constellation. //===================================================== //bit hyp error c/hyp c/hyp //pos bit sign in out // 0 0 −1 −7 −5 // 0 0 −1 −5 −5 // 0 0 −1 −3 −3 // 0 0 −1 −1 −3 // 0 0 −1 +1 +3 // 0 0 −1 +3 +3 // 0 0 −1 +5 +5 // 0 0 −1 +7 +5 // 0 0 +1 −7 −5 // 0 0 +1 −5 −5 // 0 0 +1 −3 −3 // 0 0 +1 −1 −3 // 0 0 +1 +1 +3 // 0 0 +1 +3 +3 // 0 0 +1 +5 +5 // 0 0 +1 +7 +5 // 0 1 −1 −7 −7 // 0 1 −1 −5 −7 // 0 1 −1 −3 −1 // 0 1 −1 −1 −1 // 0 1 −1 +1 +1 // 0 1 −1 +3 +1 // 0 1 −1 +5 +7 // 0 1 −1 +7 +7 // 0 1 +1 −7 −7 // 0 1 +1 −5 −7 // 0 1 +1 −3 −1 // 0 1 +1 −1 −1 // 0 1 +1 +1 +1 // 0 1 +1 +3 +1 // 0 1 +1 +5 +7 // 0 1 +1 +7 +7 // 1 0 −1 −7 −3 // 1 0 −1 −5 −3 // 1 0 −1 −3 −3 // 1 0 −1 −1 −1 // 1 0 −1 +1 +1 // 1 0 −1 +3 +3 // 1 0 −1 +5 +3 // 1 0 −1 +7 +3 // 1 0 +1 −7 −3 // 1 0 +1 −5 −3 // 1 0 +1 −3 −3 // 1 0 +1 −1 −1 // 1 0 +1 +1 +1 // 1 0 +1 +3 +3 // 1 0 +1 +5 +3 // 1 0 +1 +7 +3 // 1 1 −1 −7 −7 // 1 1 −1 −5 −5 // 1 1 −1 −3 −5 // 1 1 −1 −1 −5 // 1 1 −1 +1 +5 // 1 1 −1 +3 +5 // 1 1 −1 +5 +5 // 1 1 −1 +7 +7 // 1 1 +1 −7 −7 // 1 1 +1 −5 −5 // 1 1 +1 −3 −5 // 1 1 +1 −1 −5 // 1 1 +1 +1 +5 // 1 1 +1 +3 +5 // 1 1 +1 +5 +5 // 1 1 +1 +7 +7 // 2 0 −1 −7 +1 // 2 0 −1 −5 +1 // 2 0 −1 −3 +1 // 2 0 −1 −1 +1 // 2 0 −1 +1 +1 // 2 0 −1 +3 +3 // 2 0 −1 +5 +5 // 2 0 −1 +7 +7 // 2 0 +1 −7 +1 // 2 0 +1 −5 +1 // 2 0 +1 −3 +1 // 2 0 +1 −1 +1 // 2 0 +1 +1 +1 // 2 0 +1 +3 +3 // 2 0 +1 +5 +5 // 2 0 +1 +7 +7 // 2 1 −1 −7 −7 // 2 1 −1 −5 −5 // 2 1 −1 −3 −3 // 2 1 −1 −1 −1 // 2 1 −1 +1 −1 // 2 1 −1 +3 −1 // 2 1 −1 +5 −1 // 2 1 −1 +7 −1 // 2 1 +1 −7 −7 // 2 1 +1 −5 −5 // 2 1 +1 −3 −3 // 2 1 +1 −1 −1 // 2 1 +1 +1 −1 // 2 1 +1 +3 −1 // 2 1 +1 +5 −1 // 2 1 +1 +7 −1

//===================================================== // Table of Counter-Hypotheses for 256-QAM Constellation. //===================================================== //bit hyp error c/hyp c/hyp //pos bit sign in out // 0 0 −1 −15 −13 // 0 0 −1 −13 −13 // 0 0 −1 −11 −11 // 0 0 −1 −9 −11 // 0 0 −1 −7 −5 // 0 0 −1 −5 −5 // 0 0 −1 −3 −3 // 0 0 −1 −1 −3 // 0 0 −1 +1 +3 // 0 0 −1 +3 +3 // 0 0 −1 +5 +5 // 0 0 −1 +7 +5 // 0 0 −1 +9 +11 // 0 0 −1 +11 +11 // 0 0 −1 +13 +13 // 0 0 −1 +15 +13 // 0 0 +1 −15 −13 // 0 0 +1 −13 −13 // 0 0 +1 −11 −11 // 0 0 +1 −9 −11 // 0 0 +1 −7 −5 // 0 0 +1 −5 −5 // 0 0 +1 −3 −3 // 0 0 +1 −1 −3 // 0 0 +1 +1 +3 // 0 0 +1 +3 +3 // 0 0 +1 +5 +5 // 0 0 +1 +7 +5 // 0 0 +1 +9 +11 // 0 0 +1 +11 +11 // 0 0 +1 +13 +13 // 0 0 +1 +15 +13 // 0 1 −1 −15 −15 // 0 1 −1 −13 −15 // 0 1 −1 −11 −9 // 0 1 −1 −9 −9 // 0 1 −1 −7 −7 // 0 1 −1 −5 −7 // 0 1 −1 −3 −1 // 0 1 −1 −1 −1 // 0 1 −1 +1 +1 // 0 1 −1 +3 +1 // 0 1 −1 +5 +7 // 0 1 −1 +7 +7 // 0 1 −1 +9 +9 // 0 1 −1 +11 +9 // 0 1 −1 +13 +15 // 0 1 −1 +15 +15 // 0 1 +1 −15 −15 // 0 1 +1 −13 −15 // 0 1 +1 −11 −9 // 0 1 +1 −9 −9 // 0 1 +1 −7 −7 // 0 1 +1 −5 −7 // 0 1 +1 −3 −1 // 0 1 +1 −1 −1 // 0 1 +1 +1 +1 // 0 1 +1 +3 +1 // 0 1 +1 +5 +7 // 0 1 +1 +7 +7 // 0 1 +1 +9 +9 // 0 1 +1 +11 +9 // 0 1 +1 +13 +15 // 0 1 +1 +15 +15 // 1 0 −1 −15 −11 // 1 0 −1 −13 −11 // 1 0 −1 −11 −11 // 1 0 −1 −9 −9 // 1 0 −1 −7 −7 // 1 0 −1 −5 −5 // 1 0 −1 −3 −5 // 1 0 −1 −1 −5 // 1 0 −1 +1 +5 // 1 0 −1 +3 +5 // 1 0 −1 +5 +5 // 1 0 −1 +7 +7 // 1 0 −1 +9 +9 // 1 0 −1 +11 +11 // 1 0 −1 +13 +11 // 1 0 −1 +15 +11 // 1 0 +1 −15 −11 // 1 0 +1 −13 −11 // 1 0 +1 −11 −11 // 1 0 +1 −9 −9 // 1 0 +1 −7 −7 // 1 0 +1 −5 −5 // 1 0 +1 −3 −5 // 1 0 +1 −1 −5 // 1 0 +1 +1 +5 // 1 0 +1 +3 +5 // 1 0 +1 +5 +5 // 1 0 +1 +7 +7 // 1 0 +1 +9 +9 // 1 0 +1 +11 +11 // 1 0 +1 +13 +11 // 1 0 +1 +15 +11 // 1 1 −1 −15 −15 // 1 1 −1 −13 −13 // 1 1 −1 −11 −13 // 1 1 −1 −9 −13 // 1 1 −1 −7 −3 // 1 1 −1 −5 −3 // 1 1 −1 −3 −3 // 1 1 −1 −1 −1 // 1 1 −1 +1 +1 // 1 1 −1 +3 +3 // 1 1 −1 +5 +3 // 1 1 −1 +7 +3 // 1 1 −1 +9 +13 // 1 1 −1 +11 +13 // 1 1 −1 +13 +13 // 1 1 −1 +15 +15 // 1 1 +1 −15 −15 // 1 1 +1 −13 −13 // 1 1 +1 −11 −13 // 1 1 +1 −9 −13 // 1 1 +1 −7 −3 // 1 1 +1 −5 −3 // 1 1 +1 −3 −3 // 1 1 +1 −1 −1 // 1 1 +1 +1 +1 // 1 1 +1 +3 +3 // 1 1 +1 +5 +3 // 1 1 +1 +7 +3 // 1 1 +1 +9 +13 // 1 1 +1 +11 +13 // 1 1 +1 +13 +13 // 1 1 +1 +15 +15 // 2 0 −1 −15 −7 // 2 0 −1 −13 −7 // 2 0 −1 −11 −7 // 2 0 −1 −9 −7 // 2 0 −1 −7 −7 // 2 0 −1 −5 −5 // 2 0 −1 −3 −3 // 2 0 −1 −1 −1 // 2 0 −1 +1 +1 // 2 0 −1 +3 +3 // 2 0 −1 +5 +5 // 2 0 −1 +7 +7 // 2 0 −1 +9 +7 // 2 0 −1 +11 +7 // 2 0 −1 +13 +7 // 2 0 −1 +15 +7 // 2 0 +1 −15 −7 // 2 0 +1 −13 −7 // 2 0 +1 −11 −7 // 2 0 +1 −9 −7 // 2 0 +1 −7 −7 // 2 0 +1 −5 −5 // 2 0 +1 −3 −3 // 2 0 +1 −1 −1 // 2 0 +1 +1 +1 // 2 0 +1 +3 +3 // 2 0 +1 +5 +5 // 2 0 +1 +7 +7 // 2 0 +1 +9 +7 // 2 0 +1 +11 +7 // 2 0 +1 +13 +7 // 2 0 +1 +15 +7 // 2 1 −1 −15 −15 // 2 1 −1 −13 −13 // 2 1 −1 −11 −11 // 2 1 −1 −9 −9 // 2 1 −1 −7 −9 // 2 1 −1 −5 −9 // 2 1 −1 −3 −9 // 2 1 −1 −1 −9 // 2 1 −1 +1 +9 // 2 1 −1 +3 +9 // 2 1 −1 +5 +9 // 2 1 −1 +7 +9 // 2 1 −1 +9 +9 // 2 1 −1 +11 +11 // 2 1 −1 +13 +13 // 2 1 −1 +15 +15 // 2 1 +1 −15 −15 // 2 1 +1 −13 −13 // 2 1 +1 −11 −11 // 2 1 +1 −9 −9 // 2 1 +1 −7 −9 // 2 1 +1 −5 −9 // 2 1 +1 −3 −9 // 2 1 +1 −1 −9 // 2 1 +1 +1 +9 // 2 1 +1 +3 +9 // 2 1 +1 +5 +9 // 2 1 +1 +7 +9 // 2 1 +1 +9 +9 // 2 1 +1 +11 +11 // 2 1 +1 +13 +13 // 2 1 +1 +15 +15 // 3 0 −1 −15 +1 // 3 0 −1 −13 +1 // 3 0 −1 −11 +1 // 3 0 −1 −9 +1 // 3 0 −1 −7 +1 // 3 0 −1 −5 +1 // 3 0 −1 −3 +1 // 3 0 −1 −1 +1 // 3 0 −1 +1 +1 // 3 0 −1 +3 +3 // 3 0 −1 +5 +5 // 3 0 −1 +7 +7 // 3 0 −1 +9 +9 // 3 0 −1 +11 +11 // 3 0 −1 +13 +13 // 3 0 −1 +15 +15 // 3 0 +1 −15 +1 // 3 0 +1 −13 +1 // 3 0 +1 −11 +1 // 3 0 +1 −9 +1 // 3 0 +1 −7 +1 // 3 0 +1 −5 +1 // 3 0 +1 −3 +1 // 3 0 +1 −1 +1 // 3 0 +1 +1 +1 // 3 0 +1 +3 +3 // 3 0 +1 +5 +5 // 3 0 +1 +7 +7 // 3 0 +1 +9 +9 // 3 0 +1 +11 +11 // 3 0 +1 +13 +13 // 3 0 +1 +15 +15 // 3 1 −1 −15 −15 // 3 1 −1 −13 −13 // 3 1 −1 −11 −11 // 3 1 −1 −9 −9 // 3 1 −1 −7 −7 // 3 1 −1 −5 −5 // 3 1 −1 −3 −3 // 3 1 −1 −1 −1 // 3 1 −1 +1 −1 // 3 1 −1 +3 −1 // 3 1 −1 +5 −1 // 3 1 −1 +7 −1 // 3 1 −1 +9 −1 // 3 1 −1 +11 −1 // 3 1 −1 +13 −1 // 3 1 −1 +15 −1 // 3 1 +1 −15 −15 // 3 1 +1 −13 −13 // 3 1 +1 −11 −11 // 3 1 +1 −9 −9 // 3 1 +1 −7 −7 // 3 1 +1 −5 −5 // 3 1 +1 −3 −3 // 3 1 +1 −1 −1 // 3 1 +1 +1 −1 // 3 1 +1 +3 −1 // 3 1 +1 +5 −1 // 3 1 +1 +7 −1 // 3 1 +1 +9 −1 // 3 1 +1 +11 −1 // 3 1 +1 +13 −1 // 3 1 +1 +15 −1 

What is claimed is:
 1. A demapper for a multiple-input, multiple-output symbol receiver, the demapper comprising: a hypothesis determiner to determine hypotheses values for each of a multiplicity of received symbols; and a first half counter-hypotheses determiner to reuse interim results of said hypothesis determiner to generate a first half of said counter-hypotheses.
 2. The demapper according to claim 1 and also comprising a second half counter-hypotheses determiner to receive a portion of said interim results and to provide them to a table lookup to generate a second half of said set of said counter-hypotheses.
 3. The demapper according to claim 1 and wherein said hypothesis determiner comprises: a QR decomposer to generate at least an R matrix from an input channel estimate matrix H; a normalizer to normalize input signals and elements of said R matrix; a candidate hypothesis generator operating on the output of said normalizer to generate a plurality of constrained candidate hypothesis values for one of said received symbols and resultant unconstrained hypothesis values for a second one of said received symbols; a normalized error calculator to operate with minimal multiplications and to generate an error magnitude for each of said plurality of constrained candidate hypotheses and their resultant unconstrained hypothesis values; and a hypothesis generator to review said error magnitudes and to select the constrained hypothesis and resultant unconstrained hypothesis corresponding to the smallest error magnitude.
 4. The demapper according to claim 3 and wherein said first half counter-hypotheses determiner comprises: a multiplicity of counter-hypothesis generators, one per bit of said selected hypothesis, each to review a set of said error magnitude associated with candidate counter-hypotheses and to select the counter-hypothesis corresponding to the smallest error magnitude in said set of error magnitudes.
 5. The demapper according to claim 3 and wherein said normalized error calculator comprises: a d₂ error magnitude calculator to evaluate the error Ē₂ ^((k))= X ₂− r ₂U₂ ^((k)) and its corresponding L₁ norm; a d₁ error magnitude calculator to evaluate Ũ₁ ^((k))= X ₁− R ₁₂U₂ ^((k)), to find the closest constellation point U₁ ^((k)) to an unconstrained solution Ũ₁ ^((k)) and to determine the error Ē₁ ^((k)) therebetween and its corresponding L₁ norm; and a total error magnitude calculator to determine the total error magnitude from the output of d₂ error magnitude calculator and d₁ error magnitude calculator.
 6. The demapper according to claim 5 and wherein said d₁ error magnitude calculator and said d₂ error magnitude calculator comprise L₁ norm calculators.
 7. The demapper according to claim 1 and having a fixed throughput defined by a fixed number of cycles to generate the output.
 8. The demapper according to claim 3 and wherein said normalized error calculator comprises a multiplicity of processing branches, wherein the number of processing branches scales with a complexity of the constellation type related to said symbols.
 9. The demapper according to claim 2 and providing said hypotheses and counter-hypotheses values to an LLR determiner, wherein said LLR determiner utilizes said interim results of said hypothesis and first half counter-hypotheses determiner and interim results of said second half counter-hypothesis determiner to generate a log-likelihood ratio L_(b).
 10. A method, implementable on a multiple-input, multiple-output symbol receiver, the method comprising: selecting a hypothesis for a second symbol value U₂ from among a set of fixed constellation points; calculating a hypothesis for a first symbol value U₁ from the resultant selected U₂ value; and generating a first half of counter-hypotheses from interim results of calculating said hypotheses values.
 11. The method according to claim 10 and also comprising providing a portion of said interim results to a table lookup to generate a second half of said set of said counter-hypotheses.
 12. The method according to claim 10 and also comprising, prior to said calculating: normalizing the following equations by r₁ thereby to enable the remaining operations to operate with minimal multiplications: E ₂ =X ₂ −r ₂ U ₂ E ₁ =X ₁ −r ₁ U ₁ −R ₁₂ U ₂ where the R elements are from a right triangular matrix R generated by QR decomposition from an input channel estimate matrix H, U₁ and U₂ are the transmitted symbols to be demapped and X₁ and X₂ are the received signals.
 13. The method according to claim 10 and wherein said calculating comprises calculating errors and determining the size of said errors is performed with an L₁ norm without significantly affecting the quality of the demapping.
 14. The method according to claim 10 and having a fixed throughput defined by a fixed number of cycles to generate the output.
 15. The method according to claim 11 and also comprising: determining a log-likelihood ratio L_(b) from said interim results of calculating said hypotheses values and from interim results of said table lookup operation. 